'''
初始化日志函数：
           日志器 - 日志等级 - 处理器（控制台处理器、文件处理器） - 格式化器---处理器---日志器
'''
import logging
import os
from logging import handlers


def init_logging():
    # 1 创建一个日志器（括号内不写日志器名称，默认使用root）
    logger = logging.getLogger()

    # 2 设置日志的等级
    logger.setLevel(logging.INFO)

    # 3 设置处理器
    # 控制台处理器： 控制把日志输出到控制台
    sf = logging.StreamHandler()

    # 文件处理器：   控制把日志输出到外部文件中，需提前定义文件的路径及名称
    logname = os.path.dirname(os.path.abspath(__file__)) + "/log/ego.log"
    fh = logging.handlers.TimedRotatingFileHandler(logname, when='M', interval=1, backupCount=7, encoding='utf-8')

    # 4 设置格式化器：打印日志的格式内容（系统时间、日志等级、日志器名称、当前文件名称、打印日志的函数名称、模块名称、代码行数、日志消息等内容）
    fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
    formmater = logging.Formatter(fmt)

    # 5 将格式化器添加到处理器（控制台处理器、文件处理器）中
    sf.setFormatter(formmater)
    fh.setFormatter(formmater)

    # 6 将处理器添加到日志器中
    logger.addHandler(sf)
    logger.addHandler(fh)

# 调试用的
# init_logging()
# logging.info("在utils中，测试日志会被打印")